// 二维版本的01背包问题

#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
const int K = 1010, M = 25, N = 80;
int dp[M][N];
// 表示考虑前i个罐，氧气至少是i，氮气至少是j的最小重量
int m, n, k;
struct sup
{
    int m, n, w;
}a[K];

int main()
{
    memset(dp, 0x3f, sizeof dp);
    dp[0][0] = 0;
    cin >> m >> n >> k;
    for(int i = 1; i <= k; ++i)
    {
        auto& v = a[i];
        cin >> v.m >> v.n >> v.w;
    }
    for(int i = 1; i <= k; ++i)
        for(int x = m; x >= 0; --x)
            for(int y = n; y >= 0; --y)
            {
                dp[x][y] = min(dp[x][y], dp[max(0, x - a[i].m)][max(0, y - a[i].n)] + a[i].w);
            }
    // for(int i = 1; i <= k; ++i)
    // {
    //     for(int x = 0; x <= m; ++x)
    //     {
    //         for(int y = 0; y <= n; ++y)
    //             cout << dp[i][x][y] <<  ' ';
    //         cout << endl;
    //     }
    //     cout << endl << endl;
    // }
    // cout << dp[k][0][1] << endl;
    cout << dp[m][n] << endl;
    return 0;
}